module klang.klang.转换工厂.转为输出文件.转为输出文件_;
import 全局;
import std.functional: ·fd = toDelegate;
import ··类型_ = klang.编译.类型.类型_;
import klang.编译.类型.类型_: 转换上下文_, 转换函数_, 输出解析器_, 转换支持_, 程序主机接口_;
import klang.klang.转换工厂.转换工具.Klang转换工具_: 获取输出文件名;
import klang.编译.语法节点.节点_: 基础节点_ = 节点_;
import klang.klang.类型.klang类型_: 编译选项_;
import klang.klang.语法节点.Klang节点_: 源文件_ = Klang源文件_, 获取源文件;
编译选项_ 编译选项;
程序主机接口_ 主机;
转换函数_!(基础节点_) 转为输出(转换上下文_ ct) {
    输出解析器_ 输出解析 = ct.getEmitResolver();
    .主机 = 输出解析.获取主机();
    .编译选项 = (cast(编译选项_)(主机.获取编译选项()));
    return cast(转换函数_!(基础节点_))(·fd(&.转换));
}
基础节点_[] 转换(基础节点_ n) {
    源文件_ s = 获取源文件(n);
    s.输出文件名 = 获取输出文件名(s, .主机, .编译选项, ".k"d);
    return [s];
}
